這篇來學習將資料存在前端(瀏覽器)的幾個方法,以及標題中三者的差異。
Cookie 是瀏覽器存資料的地方,也是一個小型的文字檔,大小限制在 4KB 左右,且一個 domain 只能存 20 個 cookie。特性是每次發出請求(request)都會攜帶,當然也具有安全性問題,如果儲存過多資料則會導致效能問題。
Cookie 的種類分為多種,包括 Persistent cookie
、Http-only cookie
、Persistent cookie
等等,詳細請參考 HTTP cookie。
為了解決安全性等問題,Web Storage API
後來提供了其他方法供我們使用:
localStorage
儲存的資料是永久性的,頁面關閉也不會消失,除非主動將其刪除,大小方面約 5 MB,與 sessionStorage
相同。
LocalStorage
提供的方法有:
localStorage.setItem('key', 'value')
localStorage.getItem('key')
localStorage.removeItem('key')
localStorage.clear()
上面的方法都是 key & value
的組合,範例可以參考 MDN 的文章。
sessionStorage
雖然儲存的檔案大小跟 LocalStorage
一樣,不過一旦關閉視窗後,sessionStorage
內的所有資料都會被清除。
而 SessionStorage
與 LocalStorage
同樣都不會在發出請求時帶上,這點跟 cookie
相反。
生命週期 | 大小 | |
---|---|---|
Cookie | 可設定效期或是預設 | 4 KB |
LocalStorage | 永久儲存(除非手動刪除) | 5 MB |
SessionStorage | 瀏覽器關閉後失效 | 5 MB |